package br.ufrj.dcc.ad.interfaces;

import java.util.List;
import java.util.Map;

import br.ufrj.dcc.ad.args.SimulationParameters;
import br.ufrj.dcc.ad.event.Event;

public interface IControlador {

	/** Loop principal da simulação */
	void simula(Map<SimulationParameters, String> params);
	
	/** Adiciona um Event na fila de eventos */
	void addEventoNaFila(Event event);
	
	/** Adiciona uma lista de Events na fila de eventos */
	void addEventosNaFila(List<Event> events);
	
	/** Remove e retorna p próximo evento da fila de eventos */
	Event getProximoEvento();
	
	/** Processa um evento */
	List<Event> processaEvento(Event event);
}
